package monpkg.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.rmi.server.Unreferenced;

import monpkg.entities.Admin;

/**
 * @author Yannick Bouchot
 * @author Jonathan Romero
 */
public class FAdminImpl extends UnicastRemoteObject implements IAdminImpl,
		Unreferenced, Remote {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private int counter = 0;
	private Admin a;

	/**
	 * methode permettant l'implemantation de l'interface IadminImpl
	 */
	protected FAdminImpl() throws RemoteException {
		super();
	}

	@Override
	public void unreferenced() {
		counter--;
	}

	/**
	 * methode permettant de creer un admin, incrementer le compteur et renvoyer
	 * l'admin
	 */
	@Override
	public Admin newAdmin() throws RemoteException {
		a = new Admin();
		counter++;
		return a;
	}

	/**
	 * methode permettant de creer un admin avec ses parametres, incrementer le
	 * compteur et renvoyer l'admin
	 */
	@Override
	public Admin newAdmin(String firstName, String name, String mail,
			String password) throws RemoteException {
		a = new Admin(firstName, name, mail, password);
		counter++;
		return a;
	}

	/**
	 * methode retournant le compteur qui est le nombre d'admin
	 */
	@Override
	public int adminCounter() throws RemoteException {
		return counter;
	}

	/**
	 * methode permettant de recupere l'id de l'etudiant
	 */
	@Override
	public long getId() throws RemoteException {
		return a.getId();
	}

	/**
	 * methode permettant de definir l'id de l'etudiant
	 */
	@Override
	public void setId(long id) throws RemoteException {
		a.setId(id);
	}

	/**
	 * methode permettant de recuperer le prenom de l'etudiant
	 */
	@Override
	public String getFirstName() throws RemoteException {
		return a.getFirstName();
	}

	/**
	 * methode permettant de definir le prenom de l'etudiant
	 */
	@Override
	public void setFirstName(String firstName) throws RemoteException {
		a.setFirstName(firstName);
	}

	/**
	 * methode permettant de recuperer le nom de l'etudiant
	 */
	@Override
	public String getName() throws RemoteException {
		return getName();
	}

	/**
	 * methode permettant de definir le nom de l'etudiant
	 */
	@Override
	public void setName(String name) throws RemoteException {
		setName(name);
	}

	/**
	 * methode permettant de recuperer le mot de passe de l'etudiant
	 */
	@Override
	public String getPassword() throws RemoteException {
		return a.getPassword();
	}

	/**
	 * methode permettant de definir le mot de passe de l'etudiant
	 */
	@Override
	public void setPassword(String password) throws RemoteException {
		a.setPassword(password);
	}

	/**
	 * methode permettant de recuperer le mail de l'etudiant
	 */
	@Override
	public String getMail() throws RemoteException {
		return a.getMail();
	}

	/**
	 * methode permettant de definir le mail de l'etudiant
	 */
	@Override
	public void setMail(String mail) throws RemoteException {
		a.setMail(mail);
	}

}
